package com.loeng.module.infra.service.logger;

import com.loeng.framework.common.pojo.PageResult;
import com.loeng.module.infra.api.logger.dto.ApiErrorLogCreateReqDTO;
import com.loeng.module.infra.controller.admin.logger.vo.apierrorlog.ApiErrorLogPageReqVO;
import com.loeng.module.infra.controller.admin.logger.vo.apierrorlog.ApiErrorLogSaveReqVO;
import com.loeng.module.infra.dal.dataobject.logger.ApiErrorLogDO;

import javax.validation.Valid;

/**
 * API 错误日志 Service 接口
 *
 * @author Loeng zhuo
 */
public interface ApiErrorLogService {

    /**
     * 创建系统异常日志
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createApiErrorLog(@Valid ApiErrorLogSaveReqVO createReqVO);

    /**
     * 更新 API 错误日志已处理
     *
     * @param id API 日志编号
     * @param processStatus 处理结果
     * @param processUserId 处理人
     */
    void updateApiErrorLogProcess(Long id, Integer processStatus, Long processUserId);

    /**
     * 删除系统异常日志
     *
     * @param id 编号
     */
    void deleteApiErrorLog(Long id);

    /**
     * 获得系统异常日志
     *
     * @param id 编号
     * @return 系统异常日志
     */
    ApiErrorLogDO getApiErrorLog(Long id);

    /**
     * 获得系统异常日志分页
     *
     * @param pageReqVO 分页查询
     * @return 系统异常日志分页
     */
    PageResult<ApiErrorLogDO> getApiErrorLogPage(ApiErrorLogPageReqVO pageReqVO);

    /**
     * 创建 API 错误日志
     *
     * @param createDTO 错误日志
     */
    void createApiErrorLog(ApiErrorLogCreateReqDTO createDTO);

}
